package tech.aistar.day04;

/**
 * 本类用来演示: 用户测试类
 *
 * @author: success
 * @date: 2022/7/21 9:09 上午
 */
public class UserTest {
    public static void main(String[] args) {
        //1. 因为实体类中的属性都是使用public修饰的
        //这些属性都是对外暴露的 - 外界是允许直接访问的

        //属性/方法 - 成员,成员的调用方式就看它是否使用了static来修饰

        //1. 创建一个user对象
        //只要通过new关键字,就会在jvm的堆空间中开辟一块区域,进行初始化
        //将堆空间中的地址赋值给了引用变量user1,保存在栈区

        //引用和对象的关系 - "气球理论"

        //a. 一个引用在某个时刻,只能指向一个对象
        //b. 一个对象在某个时刻,可以被多个引用指向.

        User user1 = new User();
       // User user2 = user1; // user1,user2都是指向第一次new出来的用户对象
        user1 = null; // 垃圾对象 - 没有任何引用指向的对象
                      // 最终会等待GC来进行回收 - 释放内存

        //tech.aistar.day04.User
        //User是类的简称
        //类的全称 - 类的全限定名 - 包名+类名
        System.out.println(user1);//tech.aistar.day04.User@330bedb4
        //System.out.println(user1.getClass().getName()+"@"+Integer.toHexString(user1.hashCode()));

        System.out.println("==============");

        //具体化一个对象
        User user3 = new User();
        System.out.println(user3.username);//null - 系统分配默认值
        //因为属性没有封装,非静态的属性 - 对象去调用
        //封装之前,对属性设置值
        user3.id=1;
        user3.username="admin";
        user3.age=23;

        //直接访问
        System.out.println(user3.username);
    }
}
